package com.ruoyi.common.utils;


import java.awt.*;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.text.SimpleDateFormat;

/**
 * 打印工具
 *
 * @autor LCL
 * @date - 2020/12/16
 */
public class PrintingUtils implements Printable {

    private static int COUNT = 0; //待打印数据的条数，此变量需定义在数据集合之前
//    private static List<DemoDto> DEMODTO_LIST = getOrderOrderDto(); //待打印的文字数据
    private static SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd"); //日期格式

    @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
            throws PrinterException {
        System.out.println("-----------------执行第" + (COUNT + 1) + "次打印-------------------");
        System.out.println("pageIndex = " + pageIndex);
        Component c = null;
        //转换成Graphics2D
        Graphics2D g2 = (Graphics2D) graphics;
        //设置打印颜色为黑色
        g2.setColor(Color.black);
        //打印起点坐标
        double x = pageFormat.getImageableX();
        double y = pageFormat.getImageableY();
        System.out.println("起点坐标x=" + x + ";y=" + y);
        switch (pageIndex) {
            case 0:
                //设置打印字体（字体名称、样式和点大小）（字体名称可以是物理或者逻辑名称）
                //Java平台所定义的五种字体系列：Serif、SansSerif、Monospaced、Dialog 和 DialogInput
                Font font = new Font("新宋体", Font.PLAIN, 7);
                g2.setFont(font); //设置字体
                float[] dash1 = {2.0f};
                //设置打印线的属性。
                //1.线宽 2、3、不知道，4、空白的宽度，5、虚线的宽度，6、偏移量
                g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
                //获取需要打印的图片，若是动态生成，直接传入绝对路径即可
//                Image src = Toolkit.getDefaultToolkit().getImage(DEMODTO_LIST.get(COUNT).getQrCodePath());
//                if (src == null) {
//                    System.out.println("没有找到图像");
//                }
                /**
                 * 参数2：打印的x坐标起点 参数3 打印的y坐标起点
                 * 参数4：打印图片的宽度 参数5：打印图片的高度
                 */
//                g2.drawImage(src, (int) 80, (int) 25, (int) 48, (int) 48, c);
                //标题，固定不变
                g2.drawString("DEMODTO_LIST.get(COUNT).getTitle()", (float) 30, (float) 18);
                //以下为动态的文字内容
                font = new Font("新宋体", Font.PLAIN, 5);
                g2.setFont(font);
                g2.drawString("会员ID：" , (float) 10, (float) 30);
                g2.drawString("订单原价：" , (float) 10, (float) 40);
                g2.drawString("订单实付金额：" , (float) 10, (float) 50);
                g2.drawString("订单状态：" , (float) 10, (float) 60);
                g2.drawString("配送方式：" , (float) 10, (float) 70);
                g2.drawString("订单创建时间：" , (float) 10, (float) 70);
                g2.drawString("发货时间：" , (float) 10, (float) 70);
                g2.drawString("订单确认收货时间：" , (float) 10, (float) 70);
                g2.drawString("支付类型：" , (float) 10, (float) 70);
                g2.drawString("物流名称：" , (float) 10, (float) 70);
                g2.drawString("物流单号：" , (float) 10, (float) 70);
                g2.drawString("买家留言：" , (float) 10, (float) 70);
                g2.drawString("收货人姓名：" , (float) 10, (float) 70);
                g2.drawString("收货人电话：" , (float) 10, (float) 70);
                g2.drawString("地区：" , (float) 10, (float) 70);
                g2.drawString("地址：" , (float) 10, (float) 70);
                g2.drawString("商品名称：" , (float) 10, (float) 70);
                g2.drawString("商品规格：" , (float) 10, (float) 70);
                g2.drawString("数量：" , (float) 10, (float) 70);
                g2.drawString("是否已评论：" , (float) 10, (float) 70);
                System.out.println("-----------------打印成功-------------------");
                return PAGE_EXISTS;
            default:
                return NO_SUCH_PAGE;
        }
    }
}
